package Git2024_5_9;

public class Maven {
    /**
     * Maven
     *  项目管理和整合工具 帮助快速搭建工程环境
     *  提高了重用性
     *  工程中一定会使用相关驱动 而maven相当于一个存放了世界上所有的不同版本的jar包的中央仓库
     *  寻找jar包时只需要输入标签查询即可
     *
     * 优点
     *  1 借助maven可以使用统一的规范方式下载jar包
     *  2 不同项目中使用jar包 不需要频繁"复制","粘贴"到不同项目里
     *  3 jar包依赖问题不需要自行解决 自动将jar包的对应依赖下载导入
     */
    /*-------------------------------------------------------------------------*/
    /**
     * Maven安装
     * 1 安装JDK1.8
     * 2 设置JAVA_HOME环境变量 并将java编译器地址添加到系统路径path中
     * 3 下载maven并配置maven的环境变量
     *      在此电脑 属性 高级设定
     *      或直接在导航栏搜索环境变量
     * 4 验证
     *      在命令行输入 mvn -v查看
     *
     * bin 可执行文件
     * boot 系统文件
     * conf 配置文件
     * lib 常用库
     */
    /**
     *根目录
     *-src 源码
     *----main 存放主程序
     *-------java 源码文件
     *-------resources 框架的资源文件
     *----test 存放测试程序
     *-------java java测试代码
     *-------resources java测试的资源文件
     *-pom.xml maven核心配置文件
     */
    /**
     * 仓库 存放jar包
     * 本地仓库 local 程序员自己的电脑存储资源的仓库 通过远程连接仓库获取数据
     * 远程仓库
     *      私服仓库 公司内部自主搭建 用于存放公司常用依赖
     *      中央仓库 https://mvnrepository.com/
     *      阿里镜像库
     *
     * 依赖的查找顺序
     *  本地仓库 -> 私服仓库 -> 中央仓库/阿里镜像库
     */
    // ★ repository 仓库
    /**
     * 坐标 一共有三层 数据库在筛查所需jar包时 就会经历三层筛查 才会确定唯一的jar包
     * <dependencies>外层标签 pom.xml中添加依赖的标签
     *       <dependency>
     *           第一层 <groupId> 工程组的标识 一般为公司域名倒叙 </groupId>
     *           第二层 <artifactId> 工程的标识 工程的名称 </artifactId>
     *           第三层 <version> 工程的版本号 用以在artifact仓库中区分不同的版本 </version>
     *       </dependency>
     *       <dependency>
     *           其他依赖 三层坐标并列存放在在dependency关键字标签内
     *       </dependency>
     * </dependencies>
     */
    //Maven本地仓库路径: -.M2/repository/
    //Maven配置文件路径: -.M2/settings.xml
    //设置本地仓库路径的标签: <localRepository> </localRepository>
    //设置阿里镜像库的标签: <mirror> </mirror>
    //Maven中央仓库的URL地址: https://mvnrepository.com
    //Maven坐标
        //工程组标识 <groupId> </groupId>
        //工程标识 <artifactId> </artifactId>
        //工程版本 <version> </version>
    //pom.xml中添加依赖的标签: 外层标签: <dependencies> </dependencies>
                          //内层标签: <dependency> </dependency>


    //依赖范围
    /**
     * 依赖范围 关键字: <scope> </scope>
     * 表示依赖在什么时间起作用
     *
     * (★标为较为常用的配置)
     * compile 默认值(一般不指定范围的都是默认值) 在所有阶段(开发 测试 部署 运行) 本jar会一直存在并消耗资源 ★
     * runtime 只在运行时起作用 例如JDBC驱动 适用运行和测试阶段
     * test 在测试阶段起作用 用于编译和运行测试代码 不会随项目发布 例如JUnite依赖 就是专门用于测试的依赖 ★
     * provided 只在开发 测试阶段起作用
     */
    /*
        mvn compile 编译主程序 生成target目录 存放编译主程序的字节码文件 输出到
     */

    /**
     * 运行方式
     * 1 在终端或命令提示符中运行Maven命令
     * 2 在IDEA中
     */
    /**
     * 创建Maven子工程
     *  alt + Insert 选择 Module.. 进行相应调试后点击创建即可
     */






}
